// pages/learn/net1/net1.js
/**
 * 1.小程序中网络数据请求的限制
 * 出于安全性方面的考虑，小程序官方对数据接口的请求做2个限制
 * ① 只能请求https类型的数据
 * ② 必须将接口的域名添加到信任列表中（开发者工具-详情(右上角的)-项目配置-域名信息）
 * 2.配置request合法域名。
 *  步骤：登录微信小程序管理后台-开发-开发设置-服务器域名-修改request合法域名
 *    注意事项：
 *      · 域名只支持https协议
 *      · 域名不能使用IP地址或者localhost
 *      · 域名必须经过ICP备案
 *      · 服务器域名一个月内最多可以申请5次修改
 * 3.发起get请求
 *  调用微信小程序提供的wxwx.request({})方法，可以调起get数据请求，示例代码如下。
 *  (即可以理解成原生提供了一个接口协议，request传入一个对象(如json数据)。解析该对象的一些字段含义，然后再转化成原生请求) 
 wx.request({
   url: 'https://www.escook.cn/api/get', // 必要参数 请求的接口地址，必须基于https协议,且域名已完成配置(工具、平台)
   method: 'GET', // 请求的方式
   data: {    // 发送给服务器的数据
    name:'hui',
    age:22,
   }，
   success: (res) => { // 接口成功之后的回调函数
      console.log(res) // log接口返回数据
   },
   fail: (res) => { // 接口失败之后的回调函数
      console.log(res) // log接口返回数据
   },
 })
 * 4.发起post请求
 *  调用微信小程序提供的wxwx.request({})方法，可以调起网络请求(通过method参数指定请求方式POST)，示例代码如下。
 *  (即可以理解成原生提供了一个接口协议，request传入一个对象(如json数据)。解析该对象的一些字段含义，然后再转化成原生请求) 
 wx.request({
   url: 'https://www.escook.cn/api/post', // 必要参数 请求的接口地址，必须基于https协议,且域名已完成配置(工具、平台)
   method: 'POST', // 请求的方式
   data: {    // 发送给服务器的数据
    name:'hui',
    age:22,
   }，
   success: (res) => { // 接口成功之后的回调函数
      // console.log(res) // log接口返回数据
      console.log(res.data) // res含有请求数据及返回数据其中data是响应(返回)数据
   },
   fail: (res) => { // 接口失败之后的回调函数
      console.log(res) // log接口返回数据
   },
 })
 * 
 * 5. 在页面刚加载是请求数据
 *  在很多情况下，我们需要在页面刚加载时就开始请求请求一下初始数据。而非通过点击再去获取。此时需要在页面的onLoad事件中调用获取数据的函数，示例代码如下
//页面自动/自带的方法，表示页面咋加载的时候/过程。即生命周期函数--监听页面加载
onLoad(options) {
  this.getSwiperList() // 如获取轮播图业务的接口
  this.getGidList() // 如获取图片墙/九宫格的业务接口
},
// 如获取轮播图业务的接口
getSwiperList() {...},
// 如获取图片墙/九宫格的业务接口
getGidList() {...},
 * 
 * 6. 跳过request合法域名校验。注意：仅在开发与调试阶段使用！，正式发布必须要通过前面1~5点的方式使用。
 *  如果后台程序员仅仅提供了http协议的接口，暂时没有提供https协议的接口。
 *  此时为了不耽误开发的进度，我们可以在微信开发者工具中，临时开启“开发
 *  环境不校验请求域名、TLS版本已经HTTPS证书”选项。从而跳过request合法域名的校验。
 *  【开发者工具-详情(右上角)-本地设置-不校验请求域名、web-view业务域名、TLS版本已经HTTPS证书】
 * 例如本例学习代码中，直接使用的baike.baidu接口就是没配置到平台的。但能用于学习。
 * 
 * 7. 关于跨域和Ajax的说明。
 *  ① 跨域问题只存在于基于浏览器的Web开发中。由于小程序的宿主环境是微信不是浏览器，所以小程序中不存在跨域问题。
 *  ② Ajax技术的核心是依赖于浏览器中的XMLHttpRequest对象的，由于小程序的宿主环境是微信所以小程序中不能叫做“发起Ajax请求”，而叫“发起网络请求”
 * 
 */
Page({

  /**
   * 页面的初始数据
   */
  data: {
    demo: [{
      name: 'login',
      pages: '/pages/learn/demo/login/login'
    }, {
      name: 'login',
      pages: '' // 跳转页面失败
    }, {
      name: 'login',
      pages: '/pages/learn/demo/dialog/dialog'
    }, {
      name: 'login',
      pages: 'pages/....'
    }, {
      name: 'login',
      pages: 'pages/....'
    }, ],

  },

  /**
   * 按钮事件-GET请求
   */
  getUserInfo1() {
    wx.request({
      // url: 'https://www.escook.cn/api/get',
      // https://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=银魂&bk_length=600
      url: 'https://baike.baidu.com/api/openapi/BaikeLemmaCardApi',
      method: 'GET',
      data: {
        // name:'zs',
        // age:20
        scope: 103,
        // format:'json',
        appid: 379020,
        bk_key: '银魂',
        bk_length: 600
      },
      success: (res) => { // 接口返回成功回调
        // console.log(res)
        console.log("接口返回成功回调")
        console.log(res.data) // res含有请求数据及返回数据其中data是响应(返回)数据
      },
      fail: (errer) => { // 接口失败回调
        console.log("接口失败回调")
        console.log(errer)
      }
    })
  },

  /**
   * 按钮事件-POST请求
   */
  postUserInfo1() {
    wx.request({
      url: 'https://www.escook.cn/api/post',
      method: 'POST',
      data: {
        name: 'ls',
        age: 23
      },
      success: (res) => { // 接口返回成功回调
        // console.log(res)
        console.log("接口返回成功回调")
        console.log(res.data) // res含有请求数据及返回数据其中data是响应(返回)数据
      },
      fail: (error) => { // 接口失败回调
        console.log("接口失败回调")
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // this 表示当前页面实例/对象
    this.getUserInfo1()
    this.postUserInfo1()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    const demos = []
    for (let i = 0; i < 20; i++) {
      demos.push({
        name: 'demo ' + i,
        pages: "pages " + i
      })
    }
    this.setData({
      demo: this.data.demo.concat(demos) // concat 拼接数组相当于addAll
    })
  },

  itemClick(e) {
    console.log('itemClick', e)
    const demo = e.currentTarget.dataset.demo1
    console.log('itemClick demo ->', demo)
    wx.navigateTo({
      url: demo.pages,
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})